<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
global $data;

class Colaborador extends CI_Controller {

    public function __construct() {
        parent::__construct();
        //redireccion segura
        if ($this->session->userdata('access') != 'grant') {
            redirect(base_url());
        }
        global $data;
        $data['responsableNombre'] = $this->session->userdata('responsableNombre');
        $data['place'] = 'colaborador';
        $this->stats();
    }

    public function index() {
        global $data;
        //termina redirecion

        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        $this->load->view('template/footer');
    }

    //carga vista de colaborador
    public function menu($opc) {
        global $data;
        //termina redirecion

        $data['mensaje'] = $this->session->userdata('mensaje');
        $fomulario = $this->session->userdata('formulario');
        $data['nombre_col'] = $fomulario['nombre_col'];
        $data['apellido_col'] = $fomulario['apellido_col'];
        $data['rol_col'] = $fomulario['rol_col'];
        $data['carrera_col'] = $fomulario['carrera_col'];
        $data['upload_done'] = $fomulario['upload_done'];


        //carga de vistas
        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        switch ($opc) {
            case 'agregar':
                $this->load->view('colaborador/content_alta');
                break;
            case 'modificar':
                $this->load->view('colaborador/content_buscar');
                break;
        }
        $this->load->view('template/footer');
        //reiniciamos las variables 
        $this->session->unset_userdata('formulario');
        $this->session->unset_userdata('mensaje');
    }

    public function altaColaborador() {
        $this->form_validation->set_rules('nombre_col', 'nombreColaborador', 'required|trim|xss_clean');
        $this->form_validation->set_rules('apellido_col', 'apellidoColaborador', 'required|trim|xss_clean');
        $this->form_validation->set_rules('rol_col', 'rolColaborador', 'required|trim|xss_clean');
        $this->form_validation->set_rules('carrera_col', 'carreraColaborador', 'required|trim|xss_clean');

        $this->form_validation->set_error_delimiters('  <div class="alert alert-error" style="margin-top: 16px;">
                                                        <button type="button" class="close" data-dismiss="alert">×</button>
                                                        <strong>Cuidado!</strong>', '</div>');

        $this->form_validation->set_message('required', 'Hay campos vacios');


        //verificamos formulario en busca de errores de ususario
        if (!($this->input->post('altaColaborador') && $this->form_validation->run())) {

            $formulario = array(
                'nombre_col' => $this->input->post('nombre_col'),
                'apellido_col' => $this->input->post('apellido_col'),
                'rol_col' => $this->input->post('rol_col'),
                'carrera_col' => $this->input->post('carrera_col'),
                'upload_done' => ''
            );

            $this->session->set_userdata('mensaje', $this->form_validation->error('nombre_col'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('apellido_col'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('rol_col'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('carrera_col'));


            $this->session->set_userdata('formulario', $formulario);
            redirect(base_url() . 'colaborador/menu/agregar');
        }


        //SI EL FORMULARIO PASA LA VALIDACIÓN HACEMOS TODO LO QUE SIGUE
        // generamos el codigo unico de la imagen
        $fechaInicio = $this->input->post('yearInicio') . '/' . $this->input->post('mesInicio') . '/1';
        $fechaFin = $this->input->post('yearFin') . '/' . $this->input->post('mesFin') . '/1';

        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '2048';
        $config['max_width'] = '3000';
        $config['max_height'] = '3000';
        $config['overwrite'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = TRUE;

        $this->load->library('upload', $config);
        //SI LA IMAGEN FALLA AL SUBIR MOSTRAMOS EL ERROR EN LA VISTA UPLOAD_VIEW
        if (!$this->upload->do_upload('file_col')) {

            $formulario = array(
                'nombre_col' => $this->input->post('nombre_col'),
                'apellido_col' => $this->input->post('apellido_col'),
                'rol_col' => $this->input->post('rol_col'),
                'carrera_col' => $this->input->post('carrera_col'),
                'upload_done' => ''
            );

            $errorMsj = '   <div class="alert alert-error" style="margin-top: 16px;">
                            <button type="button" class="close" data-dismiss="alert">×</button>
                            <strong> Cuidado! </strong> ' . $this->upload->display_errors() . '</div>';
            $this->session->set_userdata('mensaje', $errorMsj);
            $this->session->set_userdata('formulario', $formulario);

            redirect(base_url() . 'colaborador/menu/agregar');
        }
        //la imagen se subio correctamente, procedemos con la insercion en la base
        else {
            $file_info = $this->upload->data();
            $this->_create_thumbnail($file_info['file_name'], FALSE, 'assets/uploads/colaboradores/');

            if ($this->is_empty($this->input->post('posicion_col'))) {
                $posicion = null;
            } else {
                $posicion = $this->input->post('posicion_col');
            }

            $this->ciempies_model->agregarColaborador($this->input->post('rol_col'), $this->input->post('nombre_col'), $this->input->post('apellido_col'), $this->input->post('carrera_col'), $fechaInicio, $fechaFin, $file_info['file_name'], $this->session->userdata('responsableID'), $posicion);
            //regresamos al contrador principal
            $formulario = array(
                'nombre_col' => '',
                'apellido_col' => '',
                'rol_col' => '',
                'carrera_col' => '',
                'upload_done' => '  <div class="alert alert-success" style="margin-top: 16px;">
                                    <button type="button" class="close" data-dismiss="alert">×</button>
                                    <strong> Bien! </strong> ' . $this->input->post('apellido_col') . ' ' . $this->input->post('nombre_col') . ' fue agregado correctamente</div>'
            );

            $this->session->set_userdata('formulario', $formulario);
            redirect(base_url() . 'colaborador/menu/agregar');
        }
    }

    //FUNCIÓN PARA CREAR LA MINIATURA A LA MEDIDA QUE LE DIGAMOS
    public function _create_thumbnail($filename, $ratio, $destino) {
        $config['image_library'] = 'gd2';

        //CARPETA EN LA QUE ESTÁ LA IMAGEN A REDIMENSIONAR
        $config['source_image'] = 'assets/uploads/' . $filename;
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = $ratio;

        //CARPETA EN LA QUE GUARDAMOS LA MINIATURA
        $config['new_image'] = $destino;
        $config['width'] = 480;
        $config['height'] = 640;
        $this->load->library('image_lib');
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
        //borramos la original

        unlink($config['source_image']);
    }

    public function eliminarColaborador($key) {
        $filename = $this->ciempies_model->eliminarColaborador($key);
        unlink('assets/uploads/colaboradores/' . $filename->URL);
        $notify_del = ' <div class="alert">
               <button type="button" class="close" data-dismiss="alert">×</button>
               <strong>Borrado</strong> terminado. </div>';
        $this->session->set_userdata('mensaje', $notify_del);
        redirect(base_url() . 'colaborador/menu/modificar');
    }

    public function buscarColaborador() {
        $p = $this->input->post('tag');
        $data['colaborador'] = $this->ciempies_model->buscarColaborador($p);
        $this->load->view('colaborador/lista_colaboradores', $data);
    }

    public function modificarColaborador($id) {
        global $data;
        $data['mensaje'] = $this->session->userdata('mensaje');
        $fomulario = $this->session->userdata('formulario');
        $colaborador = $this->ciempies_model->datosColaborador($id); /* TRAE LOS DATOS DEL COLABORADOR */
        $data['nombre_col'] = $colaborador->NOMBRE;
        $data['apellido_col'] = $colaborador->APELLIDO;
        $data['carrera_col'] = $colaborador->CARRERA;
        $data['rol_col'] = $colaborador->ROL;
        $data['fechaInicio'] = $colaborador->FECHAINICIO;
        $data['fechaFin'] = $colaborador->FECHAFIN;
        $data['url'] = $colaborador->URL;
        $data['id'] = $colaborador->ID;
        $data['posicion_col'] = $colaborador->POSICION;
        $data['upload_done'] = $fomulario['upload_done'];

        //carga de vistas
        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        $this->load->view('colaborador/content_editar');
        $this->load->view('template/footer');

        //reiniciamos las variables 
        $this->session->unset_userdata('formulario');
        $this->session->unset_userdata('mensaje');
    }

    public function actualizarDatosColaborador() {

        $this->form_validation->set_rules('nombre_col', 'nombreColaborador', 'required|trim|xss_clean');
        $this->form_validation->set_rules('apellido_col', 'apellidoColaborador', 'required|trim|xss_clean');
        $this->form_validation->set_rules('rol_col', 'rolColaborador', 'required|trim|xss_clean');
        $this->form_validation->set_rules('carrera_col', 'carreraColaborador', 'required|trim|xss_clean');

        $this->form_validation->set_error_delimiters('  <div class="alert alert-error" style="margin-top: 16px;">
                                                        <button type="button" class="close" data-dismiss="alert">×</button>
                                                        <strong> Cuidado! </strong> ', ' </div>');
        $this->form_validation->set_message('required', 'Hay campos vacios');
        //verificamos formulario en busca de errores de ususario
        if (!($this->input->post('altaColaborador') && $this->form_validation->run())) {

            $formulario = array(
                'nombre_col' => $this->input->post('nombre_col'),
                'apellido_col' => $this->input->post('apellido_col'),
                'rol_col' => $this->input->post('rol_col'),
                'carrera_col' => $this->input->post('carrera_col'),
                'upload_done' => ''
            );

            $this->session->set_userdata('mensaje', $this->form_validation->error('nombre_col'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('apellido_col'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('rol_col'));
            $this->session->set_userdata('mensaje', $this->form_validation->error('carrera_col'));


            $this->session->set_userdata('formulario', $formulario);
            redirect(base_url() . 'colaborador/modificarColaborador/' . $this->input->post('id'));
        }

        //el formulario paso la validacion

        $fechaInicio = $this->input->post('yearInicio') . '/' . $this->input->post('mesInicio') . '/1';
        $fechaFin = $this->input->post('yearFin') . '/' . $this->input->post('mesFin') . '/1';

        //preparamos la variable de posicion
        if ($this->is_empty($this->input->post('posicion_col'))) {
            $posicion = null;
        } else {
            $posicion = $this->input->post('posicion_col');
        }

        //revisamos la imagen, para ver si se intento cambiar la imagen

        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '2048';
        $config['max_width'] = '3000';
        $config['max_height'] = '3000';
        $config['overwrite'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = TRUE;

        $this->load->library('upload', $config);
        //la imagen falla al subirse?
        if (!$this->upload->do_upload('file_col')) {

            $formulario = array(
                'nombre_col' => $this->input->post('nombre_col'),
                'apellido_col' => $this->input->post('apellido_col'),
                'rol_col' => $this->input->post('rol_col'),
                'carrera_col' => $this->input->post('carrera_col'),
                'upload_done' => ''
            );

            //no se selecciono foto?
            if ($this->upload->display_errors() == '<p>You did not select a file to upload.</p>') {
                //la iamgen no cambio, se actualizan los campos con los nuevos datos
                $d = array(
                    'rol_col' => $this->input->post('rol_col'),
                    'nombre_col' => $this->input->post('nombre_col'),
                    'apellido_col' => $this->input->post('apellido_col'),
                    'carrera_col' => $this->input->post('carrera_col'),
                    'fechaInicio' => $fechaInicio,
                    'fechaFin' => $fechaFin,
                    'url' => $this->input->post('url'),
                    'id' => $this->input->post('id'),
                    'posicion' => $posicion
                );
                $this->ciempies_model->actualizarColaborador($d);
                $notify_good = '<div class="alert alert-success" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>Bien!</strong> colaborador actualizado con éxito. </div>';
                $this->session->set_userdata('mensaje', $notify_good);
                redirect(base_url() . 'colaborador/modificarColaborador/' . $this->input->post('id'));
            }
            //se selecciono pero no cumple las normas
            $errorMsj = '<div class="alert alert-error" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong> Cuidado! </strong>' . $this->upload->display_errors() . ' </div>';
            $this->session->set_userdata('mensaje', $errorMsj);
            $this->session->set_userdata('formulario', $formulario);

            redirect(base_url() . 'colaborador/modificarColaborador/' . $this->input->post('id'));
        }
        //la imagen se subio correctamente, procedemos con la actualizacion de los datos
        else {

            $file_info = $this->upload->data();
            $this->_create_thumbnail($file_info['file_name'], FALSE, 'assets/uploads/colaboradores/');
            $d = array(
                'rol_col' => $this->input->post('rol_col'),
                'nombre_col' => $this->input->post('nombre_col'),
                'apellido_col' => $this->input->post('apellido_col'),
                'carrera_col' => $this->input->post('carrera_col'),
                'fechaInicio' => $fechaInicio,
                'fechaFin' => $fechaFin,
                'url' => $file_info['file_name'],
                'id' => $this->input->post('id'),
                'posicion' => $posicion
            );
            $this->ciempies_model->actualizarColaborador($d);
            //eliminamos la imagen anterior
            unlink('assets/uploads/colaboradores/' . $this->input->post('url'));
            //regresamos al contrador principal
            $formulario = array(
                'nombre_col' => '',
                'apellido_col' => '',
                'rol_col' => '',
                'carrera_col' => '',
                'upload_done' => '  <div class="alert alert-success" style="margin-top: 16px;">
                                        <button type="button" class="close" data-dismiss="alert">×</button>
                                        <strong>Bien!</strong> colaborador actualizado con éxito. </div>'
            );

            $this->session->set_userdata('formulario', $formulario);
            redirect(base_url() . 'colaborador/modificarColaborador/' . $this->input->post('id'));
        }
    }

    function is_empty($var) {
        return empty($var);
    }

    public function stats() {
        global $data;
        $data['acceso'] = $this->ciempies_model->lista_accesos();
        $data['tcolab'] = $this->ciempies_model->get_total('COLABORADOR');
        $data['ttutorial'] = $this->ciempies_model->get_total('TUTORIAL');
        $data['therramienta'] = $this->ciempies_model->get_total('HERRAMIENTA');
        $data['tuso_herramienta'] = $this->ciempies_model->get_total('uso_herramienta');
        $data['tvisita'] = $this->ciempies_model->get_total('visita');
    }

}
